package top.superflow.version.db.compare

import top.superflow.version.compare.suggestion.SuggestedAction

class CompatibleAction protected(theSource : Any, theTarget : Any) extends SuggestedAction{
  private val source = theSource

  private val target = theTarget

  def getSource : Any = {
    this.source
  }

  def getTarget : Any = {
    this.target
  }
}

case class NotActionNeeded () extends SuggestedAction

case class CheckChildrenSuggestion () extends SuggestedAction

case class MatchMissingAndExtraEntity (theSource : Any, theTarget : Any) extends CompatibleAction(theSource : Any, theTarget : Any)

case class RenameMatchedExtraToMissingEntity (theSource : Any, theTarget : Any) extends CompatibleAction(theSource : Any, theTarget : Any)

case class AddMissingEntity (theSource : Any, theTarget : Any) extends CompatibleAction(theSource : Any, theTarget : Any)

case class RemoveExtraEntity (theSource : Any, theTarget : Any) extends CompatibleAction(theSource : Any, theTarget : Any)


case class MatchMissingAndExtraField (theSource : Any, theTarget : Any) extends CompatibleAction(theSource : Any, theTarget : Any)

case class RenameMatchedExtraToMissingField (theSource : Any, theTarget : Any) extends CompatibleAction(theSource : Any, theTarget : Any)

case class AddMissingField (theSource : Any, theTarget : Any) extends CompatibleAction(theSource : Any, theTarget : Any)

case class RemoveExtraField (theSource : Any, theTarget : Any) extends CompatibleAction(theSource : Any, theTarget : Any)


case class MatchMissingAndExtraIndex (theSource : Any, theTarget : Any) extends CompatibleAction(theSource : Any, theTarget : Any)

case class RenameMatchedExtraToMissingIndex (theSource : Any, theTarget : Any) extends CompatibleAction(theSource : Any, theTarget : Any)

case class AddMissingIndex (theSource : Any, theTarget : Any) extends CompatibleAction(theSource : Any, theTarget : Any)

case class RemoveExtraIndex (theSource : Any, theTarget : Any) extends CompatibleAction(theSource : Any, theTarget : Any)


case class MatchMissingAndExtraColumnOfIndex (theSource : Any, theTarget : Any) extends CompatibleAction(theSource : Any, theTarget : Any)

case class RenameMatchedExtraToMissingColumnOfIndex (theSource : Any, theTarget : Any) extends CompatibleAction(theSource : Any, theTarget : Any)

case class AddMissingColumnOfIndex (theSource : Any, theTarget : Any) extends CompatibleAction(theSource : Any, theTarget : Any)

case class RemoveExtraColumnOfIndex (theSource : Any, theTarget : Any) extends CompatibleAction(theSource : Any, theTarget : Any)

case class RemoveInexistentColumnOfIndex (theSource : Any, theTarget : Any) extends CompatibleAction(theSource : Any, theTarget : Any)

case class MakeUniqueOfIndexConsistent (theSource : Any, theTarget : Any) extends CompatibleAction(theSource : Any, theTarget : Any)




case class MakeTypeOfFieldConsistent (theSource : Any, theTarget : Any) extends CompatibleAction(theSource : Any, theTarget : Any)

case class MakeInsertableOfFieldConsistent(theSource : Any, theTarget : Any) extends CompatibleAction(theSource : Any, theTarget : Any)

case class MakeLengthOfFieldConsistent(theSource : Any, theTarget : Any) extends CompatibleAction(theSource : Any, theTarget : Any)

case class MakeNullableOfFieldConsistent(theSource : Any, theTarget : Any) extends CompatibleAction(theSource : Any, theTarget : Any)

case class MakePrecisionOfFieldConsistent(theSource : Any, theTarget : Any) extends CompatibleAction(theSource : Any, theTarget : Any)

case class MakeScaleOfFieldConsistent(theSource : Any, theTarget : Any) extends CompatibleAction(theSource : Any, theTarget : Any)

case class MakeUniqueOfFieldConsistent(theSource : Any, theTarget : Any) extends CompatibleAction(theSource : Any, theTarget : Any)

